// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.SQLUtils;
// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
// import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
// import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
// import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
// import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject;
// import com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../../../../ast/statement/SQLSelectQueryBlock.h"
#include "../OracleSQLObject.h"

class OracleSelectQueryBlock : virtual public SQLSelectQueryBlock, virtual public OracleSQLObject
{
public:
  ModelClause_ptr modelClause;

  BOOL_ptr skipLocked;

  SQLObject_ptr clone();

  OracleSelectQueryBlock();
  SHAREDOBJECT(OracleSelectQueryBlock);
  ModelClause_ptr getModelClause();

  void setModelClause(ModelClause_ptr modelClause);
  BOOL_ptr isSkipLocked();

  void setSkipLocked(BOOL_ptr skipLocked);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);
  void accept0(OracleASTVisitor_ptr visitor);
  string_ptr toString();
  void limit(int rowCount, int offset);
  void setFrom(string_ptr tableName);
};
